home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import os
- import re
- import locale
- import debconf
- import PyICU
- from ubiquity.plugin import *
- from ubiquity import i18n, misc
- NAME = 'language'
- AFTER = None
- WEIGHT = 10
- _release_notes_url_path = '/cdrom/.disk/release_notes_url'
-
- class PageBase(PluginUI):
-
- def set_language_choices(self, choices, choice_map):
- '''Called with language choices and a map to localised names.'''
- self.language_choice_map = dict(choice_map)
-
-
- def set_language(self, language):
- '''Set the current selected language.'''
- pass
-
-
- def get_language(self):
- '''Get the current selected language.'''
- return 'C'
-
-
- def set_oem_id(self, text):
- pass
-
-
- def get_oem_id(self):
- return ''
-
-
-
- class PageGtk(PageBase):
- plugin_is_language = True
-
- def __init__(self, controller, *args, **kwargs):
- self.controller = controller
- if self.controller.oem_user_config:
- ui_file = 'stepLanguageOnly.ui'
- self.only = True
- else:
- ui_file = 'stepLanguage.ui'
- self.only = False
-
- try:
- import gtk
- builder = gtk.Builder()
- builder.add_from_file('/usr/share/ubiquity/gtk/%s' % ui_file)
- builder.connect_signals(self)
- self.page = builder.get_object('stepLanguage')
- self.iconview = builder.get_object('language_iconview')
- self.treeview = builder.get_object('language_treeview')
- self.oem_id_entry = builder.get_object('oem_id_entry')
- if self.controller.oem_config:
- builder.get_object('oem_id_vbox').show()
-
- release_notes_vbox = builder.get_object('release_notes_vbox')
- if release_notes_vbox:
-
- try:
- release_notes_url = builder.get_object('release_notes_url')
- release_notes = open(_release_notes_url_path)
- release_notes_url.set_uri(release_notes.read().rstrip('\n'))
- release_notes.close()
- except (KeyboardInterrupt, SystemExit):
- raise
- except:
- None<EXCEPTION MATCH>(KeyboardInterrupt, SystemExit)
- release_notes_vbox.hide()
-
-
- None<EXCEPTION MATCH>(KeyboardInterrupt, SystemExit)
- except Exception:
- e = None
- self.debug('Could not create language page: %s', e)
- self.page = None
-
- self.plugin_widgets = self.page
-
-
- def set_language_choices(self, choices, choice_map):
- import gtk
- import gobject
- PageBase.set_language_choices(self, choices, choice_map)
- list_store = gtk.ListStore(gobject.TYPE_STRING)
- for choice in choices:
- list_store.append([
- choice])
-
- if self.only:
- self.iconview.set_model(list_store)
- self.iconview.set_text_column(0)
- elif len(self.treeview.get_columns()) < 1:
- column = gtk.TreeViewColumn(None, gtk.CellRendererText(), text = 0)
- column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
- self.treeview.append_column(column)
- selection = self.treeview.get_selection()
- selection.connect('changed', self.on_language_selection_changed)
-
- self.treeview.set_model(list_store)
-
-
- def set_language(self, language):
- if self.only:
- model = self.iconview.get_model()
- iterator = model.iter_children(None)
- while iterator is not None:
- if unicode(model.get_value(iterator, 0)) == language:
- path = model.get_path(iterator)
- self.iconview.select_path(path)
- self.iconview.scroll_to_path(path, True, 0.5, 0.5)
- break
-
- iterator = model.iter_next(iterator)
- else:
- model = self.treeview.get_model()
- iterator = model.iter_children(None)
- while iterator is not None:
- if unicode(model.get_value(iterator, 0)) == language:
- path = model.get_path(iterator)
- self.treeview.get_selection().select_path(path)
- self.treeview.scroll_to_cell(path, use_align = True, row_align = 0.5)
- break
-
- iterator = model.iter_next(iterator)
-
-
- def get_language(self):
- if self.only:
- model = self.iconview.get_model()
- items = self.iconview.get_selected_items()
- if not items:
- return 'C'
- iterator = model.get_iter(items[0])
- else:
- selection = self.treeview.get_selection()
- (model, iterator) = selection.get_selected()
- if iterator is None:
- return 'C'
- value = unicode(model.get_value(iterator, 0))
- return self.language_choice_map[value][1]
-
-
- def on_language_activated(self, *args, **kwargs):
- self.controller.go_forward()
-
-
- def on_language_selection_changed(self, *args, **kwargs):
- lang = self.get_language()
- if lang:
- lang = lang.split('.')[0].lower()
- self.controller.translate(lang)
-
-
-
- def set_oem_id(self, text):
- return self.oem_id_entry.set_text(text)
-
-
- def get_oem_id(self):
- return self.oem_id_entry.get_text()
-
-
-
- class PageKde(PageBase):
- plugin_breadcrumb = 'ubiquity/text/breadcrumb_language'
- plugin_is_language = True
-
- def __init__(self, controller, *args, **kwargs):
- self.controller = controller
-
- try:
- uic = uic
- import PyQt4
- SIGNAL = SIGNAL
- import PyQt4.QtCore
- QLabel = QLabel
- import PyQt4.QtGui
- self.page = uic.loadUi('/usr/share/ubiquity/qt/stepLanguage.ui')
- self.combobox = self.page.language_combobox
- self.combobox.currentIndexChanged[str].connect(self.on_language_selection_changed)
- if not self.controller.oem_config:
- self.page.oem_id_label.hide()
- self.page.oem_id_entry.hide()
-
-
- class linkLabel((QLabel,)):
-
- def __init__(self, wizard, parent):
- QLabel.__init__(self, parent)
- self.wizard = wizard
-
-
- def mouseReleaseEvent(self, event):
- self.wizard.openReleaseNotes()
-
-
- def setText(self, text):
- QLabel.setText(self, text)
- self.resize(self.sizeHint())
-
-
- self.release_notes_url = linkLabel(self, self.page.release_notes_frame)
- self.release_notes_url.setObjectName('release_notes_url')
- self.release_notes_url.show()
- self.release_notes_url_template = None
-
- try:
- release_notes = open(_release_notes_url_path)
- self.release_notes_url_template = release_notes.read().rstrip('\n')
- release_notes.close()
- except (KeyboardInterrupt, SystemExit):
- raise
- except:
- self.page.release_notes_label.hide()
- self.page.release_notes_frame.hide()
-
- except Exception:
- e = None
- self.debug('Could not create language page: %s', e)
- self.page = None
-
- self.plugin_widgets = self.page
-
-
- def openReleaseNotes(self):
- lang = self.selected_language()
- if lang:
- lang = lang.split('.')[0].lower()
- url = self.release_notes_url_template.replace('${LANG}', lang)
- self.openURL(url)
-
-
-
- def openURL(self, url):
- misc.execute('su', '-c', 'xhost +localhost', 'ubuntu')
- misc.execute('su', '-c', 'kfmclient openURL ' + url, 'ubuntu')
-
-
- def set_language_choices(self, choices, choice_map):
- QString = QString
- import PyQt4.QtCore
- PageBase.set_language_choices(self, choices, choice_map)
- self.combobox.clear()
- for choice in choices:
- self.combobox.addItem(QString(unicode(choice)))
-
-
-
- def set_language(self, language):
- QString = QString
- import PyQt4.QtCore
- index = self.combobox.findText(QString(unicode(language)))
- if index < 0:
- self.combobox.addItem('C')
- else:
- self.combobox.setCurrentIndex(index)
-
-
- def get_language(self):
- lang = self.selected_language()
- if lang:
- return lang
- return 'C'
-
-
- def selected_language(self):
- lang = self.combobox.currentText()
- if lang.isNull():
- return None
- return self.language_choice_map[unicode(lang)][1]
-
-
- def on_language_selection_changed(self):
- lang = self.selected_language()
- if lang:
- lang = lang.split('.')[0].lower()
- self.controller.translate(lang)
- if self.release_notes_url_template is not None:
- url = self.release_notes_url_template.replace('${LANG}', lang)
- text = i18n.get_string('release_notes_url', lang)
- self.release_notes_url.setText('<a href="%s">%s</a>' % (url, text))
-
-
-
-
- def set_oem_id(self, text):
- return self.page.oem_id_entry.setText(text)
-
-
- def get_oem_id(self):
- return unicode(self.page.oem_id_entry.text())
-
-
-
- class PageDebconf(PageBase):
- plugin_title = 'ubiquity/text/language_heading_label'
-
-
- class PageNoninteractive(PageBase):
-
- def __init__(self, controller, *args, **kwargs):
- self.controller = controller
-
-
- def set_language(self, language):
- '''Set the current selected language.'''
- self.language = self.language_choice_map[language][1]
-
-
- def get_language(self):
- '''Get the current selected language.'''
- return self.language
-
-
-
- class Page(Plugin):
-
- def prepare(self, unfiltered = False):
- self.language_question = None
- self.initial_language = None
- self.db.fset('localechooser/languagelist', 'seen', 'false')
-
- try:
- os.unlink('/var/lib/localechooser/preseeded')
- os.unlink('/var/lib/localechooser/langlevel')
- except OSError:
- pass
-
- if self.ui.controller.oem_config:
-
- try:
- self.ui.set_oem_id(self.db.get('oem-config/id'))
- except debconf.DebconfError:
- pass
- except:
- None<EXCEPTION MATCH>debconf.DebconfError
-
-
- None<EXCEPTION MATCH>debconf.DebconfError
- questions = [
- 'localechooser/languagelist']
- environ = {
- 'PATH': '/usr/lib/ubiquity/localechooser:' + os.environ['PATH'] }
- if 'UBIQUITY_FRONTEND' in os.environ and os.environ['UBIQUITY_FRONTEND'] == 'debconf_ui':
- environ['TERM_FRAMEBUFFER'] = '1'
- else:
- environ['OVERRIDE_SHOW_ALL_LANGUAGES'] = '1'
- return ([
- '/usr/lib/ubiquity/localechooser/localechooser'], questions, environ)
-
-
- def run(self, priority, question):
- if question == 'localechooser/languagelist':
- self.language_question = question
- if self.initial_language is None:
- self.initial_language = self.db.get(question)
-
- current_language_index = self.value_index(question)
- current_language = 'English'
- import gzip
- languagelist = gzip.open('/usr/lib/ubiquity/localechooser/languagelist.data.gz')
- language_display_map = { }
- i = 0
- for line in languagelist:
- line = unicode(line, 'utf-8')
- if line == '' or line == '\n':
- continue
-
- (code, name, trans) = line.strip(u'\n').split(u':')[1:]
- if code in ('dz', 'km'):
- i += 1
- continue
-
- language_display_map[trans] = (name, code)
- if i == current_language_index:
- current_language = trans
-
- i += 1
-
- languagelist.close()
-
- try:
- collator = PyICU.Collator.createInstance(PyICU.Locale('C'))
- except:
- collator = None
-
-
- def compare_choice(x):
- if language_display_map[x][1] == 'C':
- return None
- return x
-
- sorted_choices = sorted(language_display_map, key = compare_choice)
- self.ui.set_language_choices(sorted_choices, language_display_map)
- self.ui.set_language(current_language)
-
- return Plugin.run(self, priority, question)
-
-
- def cancel_handler(self):
- self.ui.controller.translate(just_me = False)
- Plugin.cancel_handler(self)
-
-
- def ok_handler(self):
- if self.language_question is not None:
- new_language = self.ui.get_language()
- self.preseed(self.language_question, new_language)
- if self.initial_language is None or self.initial_language != new_language:
- self.db.reset('debian-installer/country')
-
-
- if self.ui.controller.oem_config:
- self.preseed('oem-config/id', self.ui.get_oem_id())
-
- Plugin.ok_handler(self)
-
-
- def cleanup(self):
- Plugin.cleanup(self)
- i18n.reset_locale()
- self.ui.controller.translate(just_me = False, reget = True)
-
-
-
- class Install(InstallPlugin):
-
- def prepare(self, unfiltered = False):
- if 'UBIQUITY_OEM_USER_CONFIG' in os.environ:
- return ([
- '/usr/lib/ubiquity/localechooser-apply'], [])
- return ([
- 'sh',
- '-c',
- '/usr/lib/ubiquity/localechooser/post-base-installer ' + '&& /usr/lib/ubiquity/localechooser/finish-install'], [])
-
-
- def install(self, target, progress, *args, **kwargs):
- progress.info('ubiquity/install/locales')
- rv = InstallPlugin.install(self, target, progress, *args, **kwargs)
- if not rv:
- misc.execute('chroot', target, 'fontconfig-voodoo', '--auto', '--force', '--quiet')
-
- return rv
-
-
-